
$(document).ready(function() {
    listarAso();

    cargarPacientes($("#inputPaciente"));
    cargarPacientes($("#inputActPaciente"));

    cargarDiagnosticos($("#inputDiagnostico"), $("#inputDoctor"));
    cargarDiagnosticos($("#inputActDiagnostico"), $("#inputActDoctor"));

    $(".cerrarVentanaAsoEditar").click(function() {
        //hace que todos los campos del form se reseteen
        $("#actualizarAsoForm")[0].reset();
        //hace que los mensajes e iconos de validación desaparezcan.
        $("#actualizarAsoForm").data('bootstrapValidator').resetForm();

    });

    $('#agregarAsoForm').bootstrapValidator({
        // To use feedback icons, ensure that you use Bootstrap v3.1.0 or later
        feedbackIcons: {
            valid: 'glyphicon glyphicon-ok',
            invalid: 'glyphicon glyphicon-remove',
            validating: 'glyphicon glyphicon-refresh'
        },
        fields: {
            paciente: {
                validators: {
                    notEmpty: {
                        message: 'El paciente no puede estar vac&iacute;o'
                    }
                }
            },
            diagnostico: {
                validators: {
                    notEmpty: {
                        message: 'El diagnostico no puede estar vac&iacute;o'
                    }
                }
            },
            doctor: {
                validators: {
                    notEmpty: {
                        message: 'El doctor no puede estar vac&iacute;o'
                    }
                }
            }
        }
    }).on('success.form.bv', function(e) {
        // Prevent form submission
        e.preventDefault();

        // Get the form instance
        var $form = $(e.target);

        // Get the BootstrapValidator instance
        var bv = $form.data('bootstrapValidator');

        agregarAso();

    });

    $('#actualizarAsoForm').bootstrapValidator({
        // To use feedback icons, ensure that you use Bootstrap v3.1.0 or later
        feedbackIcons: {
            valid: 'glyphicon glyphicon-ok',
            invalid: 'glyphicon glyphicon-remove',
            validating: 'glyphicon glyphicon-refresh'
        },
        fields: {
            paciente: {
                validators: {
                    notEmpty: {
                        message: 'El paciente no puede estar vac&iacute;o'
                    }
                }
            },
            diagnostico: {
                validators: {
                    notEmpty: {
                        message: 'El paciente no puede estar vac&iacute;o'
                    }
                }
            },
            doctor: {
                validators: {
                    notEmpty: {
                        message: 'El paciente no puede estar vac&iacute;o'
                    }
                }
            }
        }
    }).on('success.form.bv', function(e) {
        // Prevent form submission
        e.preventDefault();

        // Get the form instance
        var $form = $(e.target);

        // Get the BootstrapValidator instance
        var bv = $form.data('bootstrapValidator');

        actualizarAso();

    });

    $("#inputDiagnostico").change(function() {
        cargarDoctores($("#inputDoctor"), $(this).val());
    });

    $("#inputActDiagnostico").change(function() {
        cargarDoctores($("#inputActDoctor"), $(this).val());
    });

    $(".selectpicker").selectpicker();
});

function agregarAso() {
    var aso1 = new Object();
    aso1.idPaciente = $("#inputPaciente").val();
    aso1.idDiagnostico = $("#inputDiagnostico").val();
    aso1.idDoctor = $("#inputDoctor").val();


    $.ajax({
        url: '/EmergenciasWAR/diagnosticos/pacientes',
        dataType: 'json',
        type: 'POST',
        data: JSON.stringify(aso1),
        success: function(data) {

            if (data.estado == "0") {
                bootbox.alert(data.mensaje);
                listarAso();

                //hace que todos los campos del form se reseteen
                $("#agregarAsoForm")[0].reset();
                //hace que los mensajes e iconos de validación desaparezcan.
                $("#agregarAsoForm").data('bootstrapValidator').resetForm();

            } else {
                bootbox.alert(data.mensaje);
                //habilita de nuevo el boton de guardar
                $("#buttonAsoGuardar").prop("disabled", false);
            }

        },
        error: function() {
            bootbox.alert("Datos no guardados. Intente de nuevo");
            //habilita de nuevo el boton de guardar
            $("#buttonAsoGuardar").prop("disabled", false);
        }
    });
}

function actualizarAso() {
    var aso1 = new Object();
    aso1.idPaciente = $("#inputActPaciente").val();
    aso1.idDiagnostico = $("#inputActDiagnostico").val();
    aso1.idDoctor = $("#inputActDoctor").val();
    aso1.idDiagnosticoPaciente = $("#inputActDiagnosticoPaciente").val();


    $.ajax({
        url: '/EmergenciasWAR/diagnosticos/pacientes',
        dataType: 'json',
        type: 'PUT',
        data: JSON.stringify(aso1),
        success: function(data) {

            if (data.estado == "0") {
                bootbox.alert(data.mensaje);
                listarAso();

                //hace que todos los campos del form se reseteen
                $("#actualizarAsoForm")[0].reset();
                //hace que los mensajes e iconos de validación desaparezcan.
                $("#actualizarAsoForm").data('bootstrapValidator').resetForm();

                $('#myAsoModal').modal('hide');
                $('#myAsoModal').css("visibility", "hidden");
            } else {
                bootbox.alert(data.mensaje);
                //habilita de nuevo el boton de guardar
                $("#buttonAsoActualizar").prop("disabled", false);
            }

        },
        error: function() {
            bootbox.alert("Datos no actualizados. Intente de nuevo");
            //habilita de nuevo el boton de guardar
            $("#buttonAsoActualizar").prop("disabled", false);
        }
    });
}

function listarAso() {
    $("#asociacion_table").find('tbody').empty();
    $.ajax({
        url: '/EmergenciasWAR/diagnosticos/pacientes',
        dataType: 'json',
        type: 'get',
        success: function(data) {
            var row = "<tr class='warning'>\n\
                            <th></th>\n\
                            <th></th>\n\
                            <th>Paciente </th>\n\
                            <th>Diagn&oacute;stico </th>\n\
                            <th>Doctor</th>\n\
                        </tr>";

            if (data.estado == "0") {
                if (data.datos.length > 0) {
                    $.each(data.datos, function(i, item) {

                        row += "<tr><td width='6%'><a onclick='getDetalleAso($(this).parent().parent()," +
                                item.idDiagnosticoPaciente + "); ' title='Editar Fila'><i class='glyphicon glyphicon-edit'/> editar</a></td>";
                        row += "<td><a href='/EmergenciasWAR/reglas/paciente/" + item.idDiagnosticoPaciente + "' title='Nueva Regla'><i class='glyphicon glyphicon-eye-open'/> reglas asociadas</a></td>";
                        row += "<td><input id='sector-tmp' type='hidden'/>" +
                                item.nombresPaciente + " " + item.apellidosPaciente + "</td>";
                        row += "<td><input id='sector-tmp' type='hidden'/>" +
                                item.descripcionDiagnostico + "</td>";
                        row += "<td><input id='sector-tmp' type='hidden' value='" + item.idDoctor + "'/>" +
                                item.nombresDoctor + " " + item.apellidosDoctor + "</td>";
                        row += "</tr>";

                    });
                } else {
                    row += "<tr><td>No existen asociaciones que listar.</td></tr>";
                }

            } else {
                row += "<tr><td>" + data.mensaje + "</td></tr>";

            }
            $("#asociacion_table").find('tbody').append(row);
        },
        error: function(a, b, c) {
            bootbox.alert("No se puede listar las asociaciones. Intente de nuevo");
        }

    });
}

function getDetalleAso(trId, id) {

    $.ajax({
        url: '/EmergenciasWAR/diagnosticos/pacientes/' + id,
        dataType: 'json',
        type: 'get',
        success: function(data) {
            if (data.estado == "0") {

                //setea el combo con el valor traido de la db
                $('#inputActPaciente option').prop('selected', false)
                        .filter('[value="' + data.datos[0].idPaciente + '"]')
                        .prop('selected', true);
                $('#inputActPaciente').prop('disabled', true);

                //setea el combo de estado con el valor traido de la db
                $('#inputActDiagnostico option').prop('selected', false)
                        .filter('[value="' + data.datos[0].idDiagnostico + '"]')
                        .prop('selected', true);
                $('#inputActDiagnostico').prop('disabled', true);

                $('#inputActDoctor option').prop('selected', false)
                        .filter('[value="' + data.datos[0].idDoctor + '"]')
                        .prop('selected', true);
                $('.selectpicker').selectpicker('refresh');

                //manda por debajo el id para luego poder modificar en la db
                $("#inputActDiagnosticoPaciente").val(data.datos[0].idDiagnosticoPaciente);

                $('#myAsoModal').modal('show');
                $('#myAsoModal').css("visibility", "visible");
            } else {
                bootbox.alert(data.mensaje);
            }

        },
        error: function(a, b, c) {
            alert("Ocurrio un error. Intente de nuevo m&aacute;s tarde.");
        }

    });
}

function cargarPacientes(contexto) {

    $.ajax({
        url: '/EmergenciasWAR/pacientes/combo',
        dataType: 'json',
        type: 'get',
        success: function(data) {
            if (data.estado == "0") {
                var html = '';
                $.each(data.datos, function(i, item) {

                    html += "<option value='" + item.idPersona + "'>" + item.nombres + " " + item.apellidos + ", " + item.numDoc + "</option>";
                });
                contexto.html(html);

                $('.selectpicker').selectpicker('refresh');
            } else {
                bootbox.alert(data.mensaje);
                //bootbox.alert("ERROR");
            }

        },
        error: function(a, b, c) {
            bootbox.alert("Ocurrio un error. Cargue de nuevo la pagina.");
        }

    });
}

function cargarDiagnosticos(contextoDiagnosticos, contextoDoctores) {

    $.ajax({
        url: '/EmergenciasWAR/diagnosticos/',
        dataType: 'json',
        type: 'get',
        success: function(data) {
            var idDiagnostico;
            if (data.estado == "0") {
                var html = '';
                idDiagnostico = data.datos[0].idDiagnostico;
                $.each(data.datos, function(i, item) {

                    html += "<option value='" + item.idDiagnostico + "'>" + item.descripcion + "</option>";
                });
                contextoDiagnosticos.html(html);
                cargarDoctores(contextoDoctores, idDiagnostico);
                $('.selectpicker').selectpicker('refresh');
            } else {
                bootbox.alert(data.mensaje);
                //bootbox.alert("ERROR");
            }

        },
        error: function(a, b, c) {
            bootbox.alert("Ocurrio un error. Cargue de nuevo la pagina.");
        }

    });
}

function cargarDoctores(contextoDoctores, idDiagnostico) {

    $.ajax({
        url: '/EmergenciasWAR/diagnosticos/doctores/' + idDiagnostico,
        dataType: 'json',
        type: 'get',
        success: function(data) {
            if (data.estado == "0") {
                var html = '';
                $.each(data.datos, function(i, item) {
                    html += "<option value='" + item.idPersona + "'>" + item.nombres + " " + item.apellidos + "</option>";

                });
                contextoDoctores.html(html);

                $('.selectpicker').selectpicker('refresh');
            } else {
                bootbox.alert(data.mensaje);
                //bootbox.alert("ERROR");
            }

        },
        error: function(a, b, c) {
            bootbox.alert("Ocurrio un error. Cargue de nuevo la pagina.");
        }

    });
}

